JS버전의 binary search

binarySearch = 재귀

binarySearch2 = 반복문

const binarySearch = (arr, left, right, x) => {
  let mid = -1;
  if(right >= left) {
    mid = Math.floor((left + right) / 2)

    if(arr[mid] === x) {
      return mid;
    } else if(arr[mid] > x) {
      return binarySearch(arr, left, mid-1, x)
    } else {
      return binarySearch(arr, mid+1, right, x)
    }
  } else {
    return mid;
  }
}

const arr = [1, 2, 3];
const answer = binarySearch(arr, 0, arr.length, 0);
console.log(`answer: ${answer}`);

/**
 * 
 * @param {number[]} arr 
 * @param {number} x 
 * @returns 
 */
const binarySearch2 = (arr, x) => {
  let left = 0, right = arr.length - 1

  while(left <= right) {
    let mid = Math.floor(left + right) / 2

    if(arr[mid] === x) { return mid }
    else if(arr[mid] < x) { 
      left = mid + 1
    } else {
      right = mid - 1
    }
  }
  return -1
}

const answer2 = binarySearch2([1,2,3],2)
console.log(`answer2: ${answer2}`);